# @Filename:    jd_search
# @Author:      王佳伟
# @Time:        2025-02-20 15:44
# @Describe:    在京东商品页面模拟页面上下滑动
from selenium import webdriver
from selenium.webdriver.common.by import By
import time


def jd_search(self):
    """代码执行"""
    # 通过get()方法打开网页
    self.driver.get('https://www.jd.com/')
    # 搜索框输入：python
    self.driver.find_element(By.CSS_SELECTOR, '#key').send_keys("python")
    # 点击搜索
    self.driver.find_element(By.CSS_SELECTOR, '.search-m .button').click()
    time.sleep(1)
    # 执行JavaScript脚本，将当前页面滚动条位置滑动到最底部
    # 传入了两个参数0和document.body.scrollHeight，表示要在窗口的水平坐标为0、垂直坐标为当前页面总高度的位置处进行滑动
    # 注：在实际应用中，该代码可用于模拟用户下滑页面的操作，以加载更多内容或触发特定事件
    self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
    # 等待页面加载完成，再次滑动页面到最底部
    time.sleep(2)
    self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
    # 等待2秒，滑动到最顶部
    time.sleep(2)
    self.driver.execute_script("window.scrollTo(0, 0)")
    time.sleep(2)

def positioning_method(self):
    """代码执行"""
    self.driver.get('https://www.csdn.net/')

    # 通过文本定位元素: '//*[contains(text(),"文本")]'，并通过JavaScript方法点击
    element = self.driver.find_element(By.XPATH, '//*[contains(text(),"博客")]')
    self.driver.execute_script('arguments[0].click()', element)
    time.sleep(2)

    # 通过元素的属性和属性值定位元素: '//*[@元素]'，并通过JavaScript方法点击
    element = self.driver.find_element(By.XPATH, '//*[@data-report-query="spm=3001.6907"]')
    self.driver.execute_script('arguments[0].click()', element)
    time.sleep(2)

    # 通过标签名和属性值定位元素: '//元素[@元素]'，并通过JavaScript方法输入
    element = self.driver.find_element(By.XPATH, '//input[@class="el-input__inner"]')
    self.driver.execute_script('arguments[0].value = "软件测试";', element)
    time.sleep(2)

